1. Field of the Invention
This invention relates to the field of serial data decoding. More particularly, this invention relates to the field of serial data decoding utilising state machines.
2. Description of the Prior Art
It is known to provide image data compression systems that generate a serial data stream of compressed and encoded data for transmission or recording prior to subsequent decoding and decompression. An example of such a system is that proposed by the Joint Photographic Experts Group (JPEG). In order to increase compression efficiency in such systems, it has been proposed to use a plurality of coding tables each matched to a particular part of the data to be compressed. A coding table that is effective for data containing long runs of zero values is unlikely to be well suited to the coding of data in which runs of zero values are uncommon. The use of a plurality of coding tables allows each coding table to be better suited to exploiting the characteristics of the type of data it is being used to encode.
The JPEG system was conceived as a still image compression system primarily intended for non-real time use with general purpose computers. In such general purpose computers, the task of using a plurality of differing coding tables can be achieved in a relatively straight forward fashion with appropriate software. However, if it is desired to produce a real time system for compressing and decompressing a sequence of images at a rate of perhaps 50 per second, then it is difficult for a general purpose computer operating under software control to cope with the necessary data processing load.
In order to increase processing speed, dedicated hardware may be used to achieve higher speed operation. Such a system may incorporate several different processing stages such as decorrelation, quantisation, run length coding and Huffman coding. One significant part of such a system is serial data encoding and decoding. One way of implementing serial data decoding is to use a state machine in which each received bit of data controls the next state into which the state machine passes until a state corresponding to a valid code is reached whereupon the valid code may be outputted and the state machine reset. Whilst such state machine implementations can provide high speed operation, it is difficult to accommodate the use of a plurality of decoding tables.